/*
 * Copyright (c) 2025, 2025, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * The Universal Permissive License (UPL), Version 1.0
 *
 * Subject to the condition set forth below, permission is hereby granted to any
 * person obtaining a copy of this software, associated documentation and/or
 * data (collectively the "Software"), free of charge and under any and all
 * copyright rights in the Software, and any and all patent rights owned or
 * freely licensable by each licensor hereunder covering either (i) the
 * unmodified Software as contributed to or provided by such licensor, or (ii)
 * the Larger Works (as defined below), to deal in both
 *
 * (a) the Software, and
 *
 * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
 * one is included with the Software each a "Larger Work" to which the Software
 * is contributed by such licensors),
 *
 * without restriction, including without limitation the rights to copy, create
 * derivative works of, display, perform, and distribute the Software and make,
 * use, sell, offer for sale, import, export, have made, and have sold the
 * Software and the Larger Work(s), and to sublicense the foregoing rights on
 * either these or other terms.
 *
 * This license is subject to the following condition:
 *
 * The above copyright notice and either this complete permission notice or at a
 * minimum a reference to the UPL must be included in all copies or substantial
 * portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package com.oracle.truffle.regex.tregex.test.generated;

import static com.oracle.truffle.regex.tregex.string.Encoding.UTF_16;
import static com.oracle.truffle.regex.tregex.test.generated.TestCase.match;
import static com.oracle.truffle.regex.tregex.test.generated.TestCase.noMatch;
import static com.oracle.truffle.regex.tregex.test.generated.TestCase.syntaxError;
import static com.oracle.truffle.regex.tregex.test.generated.TestCase.testCase;

import com.oracle.truffle.regex.RegexSyntaxException.ErrorCode;

public class JsGeneratedTests {

    public static final TestCase[] TESTS = {
        // @formatter:off
        /* GENERATED CODE BEGIN - KEEP THIS MARKER FOR AUTOMATIC UPDATES */

        // Generated using V8 version 13.9.205.15-rusty
        testCase("((A|){7,10}?){10,17}", "", UTF_16, match("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 86, 84, 86, 86, 86)),
        testCase("(a{1,30}){1,4}", "", UTF_16, match("a", 0, 0, 1, 0, 1)),
        testCase("((a|){4,6}){4,6}", "", UTF_16,
            match("", 0, 0, 0, 0, 0, 0, 0),
            match("a", 0, 0, 1, 1, 1, 1, 1),
            match("aa", 0, 0, 2, 2, 2, 2, 2),
            match("aaa", 0, 0, 3, 3, 3, 3, 3),
            match("aaaa", 0, 0, 4, 4, 4, 4, 4),
            match("aaaaa", 0, 0, 5, 5, 5, 5, 5),
            match("aaaaaa", 0, 0, 6, 6, 6, 6, 6),
            match("aaaaaaa", 0, 0, 7, 7, 7, 7, 7),
            match("aaaaaaaa", 0, 0, 8, 8, 8, 8, 8),
            match("aaaaaaaaa", 0, 0, 9, 9, 9, 9, 9),
            match("aaaaaaaaaa", 0, 0, 10, 10, 10, 10, 10),
            match("aaaaaaaaaaa", 0, 0, 11, 11, 11, 11, 11),
            match("aaaaaaaaaaaa", 0, 0, 12, 12, 12, 12, 12),
            match("aaaaaaaaaaaaa", 0, 0, 13, 13, 13, 13, 13)),
        testCase("((a?){4,6}){4,6}", "", UTF_16,
            match("aaaaaaa", 0, 0, 7, 7, 7, 7, 7),
            match("aaaaaa", 0, 0, 6, 6, 6, 6, 6)),
        testCase("((|a){4,6}){4,6}", "", UTF_16,
            match("", 0, 0, 0, 0, 0, 0, 0),
            match("a", 0, 0, 1, 1, 1, 1, 1),
            match("aa", 0, 0, 2, 2, 2, 2, 2),
            match("aaa", 0, 0, 3, 3, 3, 3, 3),
            match("aaaa", 0, 0, 4, 4, 4, 4, 4),
            match("aaaaa", 0, 0, 5, 5, 5, 5, 5),
            match("aaaaaa", 0, 0, 6, 6, 6, 6, 6),
            match("aaaaaaa", 0, 0, 7, 6, 7, 6, 7),
            match("aaaaaaaa", 0, 0, 8, 6, 8, 7, 8),
            match("aaaaaaaaa", 0, 0, 9, 8, 9, 8, 9),
            match("aaaaaaaaaa", 0, 0, 10, 8, 10, 9, 10),
            match("aaaaaaaaaaa", 0, 0, 11, 10, 11, 10, 11),
            match("aaaaaaaaaaaa", 0, 0, 12, 10, 12, 11, 12),
            match("aaaaaaaaaaaaa", 0, 0, 12, 10, 12, 11, 12)),
        testCase("((a??){4,6}){4,6}", "", UTF_16, match("aaaaaaa", 0, 0, 7, 6, 7, 6, 7)),
        testCase("(a|^){100}", "", UTF_16,
            match("a", 0, 0, 1, 0, 1),
            match("aa", 0, 0, 2, 1, 2),
            noMatch("aa", 1),
            noMatch("ab", 1)),
        testCase("(a|){4,6}", "", UTF_16,
            match("", 0, 0, 0, 0, 0),
            match("a", 0, 0, 1, 1, 1),
            match("aa", 0, 0, 2, 2, 2),
            match("aaa", 0, 0, 3, 3, 3),
            match("aaaa", 0, 0, 4, 3, 4),
            match("aaaaa", 0, 0, 5, 4, 5),
            match("aaaaaa", 0, 0, 6, 5, 6),
            match("aaaaaaa", 0, 0, 6, 5, 6)),
        testCase("(a|){4,6}?", "", UTF_16,
            match("", 0, 0, 0, 0, 0),
            match("a", 0, 0, 1, 1, 1),
            match("aa", 0, 0, 2, 2, 2),
            match("aaa", 0, 0, 3, 3, 3),
            match("aaaa", 0, 0, 4, 3, 4),
            match("aaaaa", 0, 0, 4, 3, 4),
            match("aaaaaa", 0, 0, 4, 3, 4),
            match("aaaaaaa", 0, 0, 4, 3, 4)),
        testCase("(a|){4,6}?a", "", UTF_16,
            noMatch("", 0),
            match("a", 0, 0, 1, 0, 0),
            match("aa", 0, 0, 2, 1, 1),
            match("aaa", 0, 0, 3, 2, 2),
            match("aaaa", 0, 0, 4, 3, 3),
            match("aaaaa", 0, 0, 5, 3, 4),
            match("aaaaaa", 0, 0, 5, 3, 4),
            match("aaaaaaa", 0, 0, 5, 3, 4),
            match("aaaaaaaa", 0, 0, 5, 3, 4)),
        testCase("(|a){4,6}a", "", UTF_16,
            noMatch("", 0),
            match("a", 0, 0, 1, 0, 0),
            match("aa", 0, 0, 2, 0, 1),
            match("aaa", 0, 0, 3, 1, 2),
            match("aaaa", 0, 0, 3, 1, 2),
            match("aaaaa", 0, 0, 3, 1, 2),
            match("aaaaaa", 0, 0, 3, 1, 2),
            match("aaaaaaa", 0, 0, 3, 1, 2)),
        testCase("((a|){4,6}?){4,6}", "", UTF_16,
            match("", 0, 0, 0, 0, 0, 0, 0),
            match("a", 0, 0, 1, 1, 1, 1, 1),
            match("aa", 0, 0, 2, 2, 2, 2, 2),
            match("aaa", 0, 0, 3, 3, 3, 3, 3),
            match("aaaa", 0, 0, 4, 4, 4, 4, 4),
            match("aaaaa", 0, 0, 5, 5, 5, 5, 5),
            match("aaaaaa", 0, 0, 6, 6, 6, 6, 6),
            match("aaaaaaaa", 0, 0, 8, 8, 8, 8, 8),
            match("aaaaaaaaa", 0, 0, 9, 9, 9, 9, 9),
            match("aaaaaaaaaa", 0, 0, 10, 10, 10, 10, 10),
            match("aaaaaaaaaaa", 0, 0, 11, 11, 11, 11, 11),
            match("aaaaaaaaaaaa", 0, 0, 12, 12, 12, 12, 12),
            match("aaaaaaaaaaaaa", 0, 0, 13, 12, 13, 13, 13),
            match("aaaaaaaaaaaaaa", 0, 0, 14, 12, 14, 14, 14),
            match("aaaaaaaaaaaaaaa", 0, 0, 15, 12, 15, 15, 15),
            match("aaaaaaaaaaaaaaaa", 0, 0, 16, 12, 16, 15, 16),
            match("aaaaaaaaaaaaaaaaa", 0, 0, 17, 16, 17, 17, 17),
            match("aaaaaaaaaaaaaaaaaa", 0, 0, 18, 16, 18, 18, 18)),
        testCase("((a){4,6}?){4,6}", "", UTF_16,
            noMatch("", 0),
            noMatch("a", 0),
            noMatch("aa", 0),
            noMatch("aaa", 0),
            noMatch("aaaa", 0),
            noMatch("aaaaa", 0),
            noMatch("aaaaaa", 0),
            match("aaaaaaaaaaaaaaaa", 0, 0, 16, 12, 16, 15, 16),
            match("aaaaaaaaaaaaaaaaa", 0, 0, 16, 12, 16, 15, 16),
            match("aaaaaaaaaaaaaaaaaaaa", 0, 0, 20, 16, 20, 19, 20),
            match("aaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 24, 20, 24, 23, 24),
            match("aaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 24, 20, 24, 23, 24)),
        testCase("((a){4,6}){4,6}", "", UTF_16,
            noMatch("", 0),
            noMatch("a", 0),
            noMatch("aa", 0),
            noMatch("aaa", 0),
            noMatch("aaaa", 0),
            noMatch("aaaaa", 0),
            noMatch("aaaaaa", 0),
            match("aaaaaaaaaaaaaaaa", 0, 0, 16, 12, 16, 15, 16),
            match("aaaaaaaaaaaaaaaaa", 0, 0, 17, 13, 17, 16, 17),
            match("aaaaaaaaaaaaaaaaaaaa", 0, 0, 20, 16, 20, 19, 20),
            match("aaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 24, 18, 24, 23, 24),
            match("aaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 24, 18, 24, 23, 24)),
        testCase("((a){4,}){4,6}", "", UTF_16,
            noMatch("", 0),
            noMatch("a", 0),
            noMatch("aa", 0),
            noMatch("aaa", 0),
            noMatch("aaaa", 0),
            noMatch("aaaaa", 0),
            noMatch("aaaaaa", 0),
            match("aaaaaaaaaaaaaaaa", 0, 0, 16, 12, 16, 15, 16),
            match("aaaaaaaaaaaaaaaaa", 0, 0, 17, 13, 17, 16, 17),
            match("aaaaaaaaaaaaaaaaaaaa", 0, 0, 20, 16, 20, 19, 20),
            match("aaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 24, 20, 24, 23, 24),
            match("aaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 25, 21, 25, 24, 25)),
        testCase("(.)\\1{2,}", "", UTF_16, noMatch("billiam", 0)),
        testCase("(^_(a{1,2}[:])*a{1,2}[:]a{1,2}([.]a{1,4})?_)+", "", UTF_16, match("_a:a:a.aaa_", 0, 0, 11, 0, 11, 1, 3, 6, 10)),
        testCase("(a{2}|())+$", "", UTF_16, match("aaaa", 0, 0, 4, 2, 4, -1, -1)),
        testCase("^a(b*)\\1{4,6}?", "", UTF_16,
            match("abbbb", 0, 0, 1, 1, 1),
            match("abbbbb", 0, 0, 6, 1, 2)),
        testCase("(?<=|$)", "", UTF_16, match("a", 0, 0, 0)),
        testCase("(?=ab)a", "", UTF_16, match("ab", 0, 0, 1)),
        testCase("(?=()|^)|x", "", UTF_16, match("empty", 0, 0, 0, 0, 0)),
        testCase("a(?<=ba)", "", UTF_16, match("ba", 0, 1, 2)),
        testCase("(?<=(?=|()))", "", UTF_16, match("aa", 0, 0, 0, -1, -1)),
        testCase("\\d\\W", "iv", UTF_16, noMatch("4\u017f", 0)),
        testCase("[\u08bc-\ucf3a]", "iv", UTF_16, match("\u03b0", 0, 0, 1)),
        testCase("[\u0450-\u6c50]\u7e57\u55ad()\u64e7\\d|", "iu", UTF_16, match("\u03b0\u7e57\u55ad\u64e79", 0, 0, 5, 3, 3)),
        testCase("a(?:|()\\1){1,2}", "", UTF_16, match("a", 0, 0, 1, -1, -1)),
        testCase("|(?<\\d\\1)\ub7e4", "", UTF_16, syntaxError(ErrorCode.InvalidNamedGroup)),
        testCase("[a-z][a-z\u2028\u2029].|ab(?<=[a-z]w.)", "", UTF_16, match("aac", 0, 0, 3)),
        testCase("(animation|animation-name)", "", UTF_16, match("animation", 0, 0, 9, 0, 9)),
        testCase("(a|){7,7}b", "", UTF_16, match("aaab", 0, 0, 4, 3, 3)),
        testCase("(a|){7,7}?b", "", UTF_16, match("aaab", 0, 0, 4, 3, 3)),
        testCase("(|a){7,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(|a){7,7}?b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(a||b){7,7}c", "", UTF_16,
            match("aaabc", 0, 0, 5, 3, 4),
            match("aaac", 0, 0, 4, 3, 3),
            match("aaabac", 0, 0, 6, 4, 5)),
        testCase("($|a){7,7}", "", UTF_16, match("aaa", 0, 0, 3, 3, 3)),
        testCase("($|a){7,7}?", "", UTF_16, match("aaa", 0, 0, 3, 3, 3)),
        testCase("(a|$){7,7}", "", UTF_16, match("aaa", 0, 0, 3, 3, 3)),
        testCase("(a|$){7,7}?", "", UTF_16, match("aaa", 0, 0, 3, 3, 3)),
        testCase("(a|$|b){7,7}", "", UTF_16,
            match("aaab", 0, 0, 4, 4, 4),
            match("aaa", 0, 0, 3, 3, 3),
            match("aaaba", 0, 0, 5, 5, 5)),
        testCase("((?=a)|a){7,7}b", "", UTF_16, noMatch("aaa", 0)),
        testCase("((?=[ab])|a){7,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("((?<=a)|a){7,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("a((?<=a)|a){7,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(a|){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(a|){0,7}?b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(|a){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(|a){0,7}?b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(a||b){0,7}c", "", UTF_16,
            match("aaabc", 0, 0, 5, 3, 4),
            match("aaac", 0, 0, 4, 2, 3),
            match("aaabac", 0, 0, 6, 4, 5)),
        testCase("((?=a)|a){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("((?=[ab])|a){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("((?<=a)|a){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("a((?<=a)|a){0,7}b", "", UTF_16, match("aaab", 0, 0, 4, 2, 3)),
        testCase("(a*?){11,11}?b", "", UTF_16, match("aaaaaaaaaaaaaaaaaaaaaaaaab", 0, 0, 26, 0, 25)),
        testCase("\\w(?<=\\W([l-w]{0,19}?){1,2}\\w)\\2\ua2d2\\1\\z", "", UTF_16, match("[qowwllu3\u0002\ua2d2qowwlluz", 0, 8, 19, 1, 8)),
        testCase("(?:a(b{0,19})c)", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 0, 9, 1, 8)),
        testCase("(?:a(b{0,19})c)de", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 0, 11, 1, 8)),
        testCase("(?<=a(b{0,19})c)de", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 9, 11, 1, 8)),
        testCase("(?<=a(b{0,19}){1,2}c)de", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 9, 11, 1, 8)),
        testCase("(?<=a(b{0,19}){2,2}c)de", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 9, 11, 1, 1)),
        testCase("c(?<=a(b{0,19}){1,2}c)de\\1f", "", UTF_16, match("abbbbbbbcdebbbbbbbf", 0, 8, 19, 1, 8)),
        testCase("[\ud0d9](?<=\\S)", "", UTF_16, match("\ud0d9", 0, 0, 1)),
        testCase("[\ud0d9](?<=\\W)", "", UTF_16, match("\ud0d9", 0, 0, 1)),
        testCase("\u0895(?<=\\S)", "", UTF_16, match("\u0895", 0, 0, 1)),
        testCase("\u0895(?<=\\W)", "", UTF_16, match("\u0895", 0, 0, 1)),
        testCase("[\u8053](?<=\\S)", "", UTF_16, match("\u8053", 0, 0, 1)),
        testCase("[\u8053](?<=\\W)", "", UTF_16, match("\u8053", 0, 0, 1)),
        testCase("\u0895|[\u8053\ud0d9]+(?<=\\S\\W\\S)", "", UTF_16, match("\ud0d9\ud0d9\ud0d9\ud0d9", 0, 0, 4)),
        testCase("a|[bc]+(?<=[abc][abcd][abc])", "", UTF_16, match("bbbb", 0, 0, 4)),
        testCase("a(b*)*c\\1d", "", UTF_16, match("abbbbcbbd", 0, 0, 9, 3, 5)),
        testCase("(|a)||b(?<=cde)|", "", UTF_16, match("a", 0, 0, 0, 0, 0)),
        testCase("^(\\1)?\\D*", "s", UTF_16, match("empty", 0, 0, 5, -1, -1)),
        testCase("abcd(?<=d|c()d)", "", UTF_16, match("_abcd", 0, 1, 5, -1, -1)),
        testCase("\\Dw\u3aa7\\A\\S(?<=\ue3b3|\\A()\\S)", "", UTF_16, match("\udad1\udcfaw\u3aa7A\ue3b3", 0, 1, 6, -1, -1)),
        testCase("a(?:c|b(?=()))*", "", UTF_16, match("abc", 0, 0, 3, -1, -1)),
        testCase("a(?:c|b(?=(c)))*", "", UTF_16, match("abc", 0, 0, 3, -1, -1)),
        testCase("a(?:c|(?<=(a))b)*", "", UTF_16, match("abc", 0, 0, 3, -1, -1)),
        testCase("(a||b){15,18}c", "", UTF_16, match("ababaabbaaac", 0, 0, 12, 10, 11)),
        testCase("(a||b){15,18}?c", "", UTF_16, match("ababaabbaaac", 0, 0, 12, 10, 11)),
        testCase("(?:ab|c|^){103,104}", "", UTF_16, match("abcababccabccabababccabcababcccccabcababababccccabcabcabccabcabcccabababccabababcababababccababccabcababcabcabccabababccccabcab", 0, 0, 127)),
        testCase("((?<=a)bec)*d", "", UTF_16, match("abecd", 0, 1, 5, 1, 4)),
        testCase("(|(^|\\z){2,77}?)?", "", UTF_16, match("empty", 0, 0, 0, -1, -1, -1, -1)),
        testCase("a(|a{15,36}){10,11}", "", UTF_16, match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 37, 1, 37)),
        testCase("a(|a{15,36}?){10,11}", "", UTF_16, match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 16, 1, 16)),
        testCase("a(|a{15,36}){10,11}$", "", UTF_16, match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 66, 37, 66)),
        testCase("a(|a{15,36}?){10,11}b$", "", UTF_16, match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab", 0, 0, 67, 30, 66)),
        testCase("(?:a()|b??){22,26}c", "", UTF_16, match("aabbbaabaaaaaabaaaac", 0, 0, 20, 19, 19)),
        testCase("b()(a\\1|){4,4}\\2c", "", UTF_16, match("baaaac", 0, 0, 6, 1, 1, 3, 4)),
        testCase("a((?=b()|)[a-d])+", "", UTF_16, match("abbbcbd", 0, 0, 7, 6, 7, -1, -1)),
        testCase("a(?=b(?<=ab)()|)", "", UTF_16, match("ab", 0, 0, 1, 2, 2)),
        testCase("[ab]*?$(?<=[^b][ab][^b])", "", UTF_16, match("aaaaaa", 0, 0, 6)),
        testCase("a(?<=([ab]+){0,5})", "", UTF_16, match("bbbba", 0, 4, 5, 0, 5)),
        testCase("([ab]+){0,5}", "", UTF_16, match("bbbba", 0, 0, 5, 0, 5)),
        testCase("[--a]", "v", UTF_16, syntaxError(ErrorCode.InvalidCharacterClass)),
        testCase("(?:^\\1|$){10,11}bc", "", UTF_16, noMatch("aaaaaabc", 0)),
        testCase("a(?:|[0-9]+?a|[0-9a]){11,13}?[ab]", "", UTF_16, match("a372a466a109585878b", 0, 0, 5)),
        testCase("\\1\ud8a7\udc25()", "u", UTF_16, match("\ud8a7\udc25", 0, 0, 2, 2, 2)),
        testCase("(?<=ab(?:c|$){8,8})", "", UTF_16, match("abccccc", 0, 7, 7)),
        testCase("(?:^a|$){1,72}a", "", UTF_16, match("aaaaaaaa", 0, 0, 2)),
        testCase("(?<=a)b|", "", UTF_16, match("aaabaaa", 3, 3, 4)),
        testCase("^a|(?:^)*", "m", UTF_16, match("aa\n\n\naa\n\n\naa\n\n\naa\n\n\n", 10, 10, 11)),
        testCase("(?<=[ab][a])", "", UTF_16, match("ababab", 2, 3, 3)),
        testCase("[ab]*(?<=a)$", "", UTF_16, match("bbabaa", 1, 1, 6)),
        testCase("[\u7514-\ua3e3\ub107]*(?<=\\S)$", "", UTF_16, match("\u76a3\u782b\u782b\ub107\u782b\u9950\u76a3\ub107\u9950\u76a3\u9a36", 3, 3, 11)),
        testCase("$(?<=a)", "y", UTF_16, match("aaaaa", 5, 5, 5)),
        testCase("^abc[^]", "m", UTF_16, noMatch("abcdabc", 1)),
        testCase("\ud800\udc00", "u", UTF_16, match("\ud800\udc00_\ud800\udc00", 1, 0, 2)),
        testCase("^(?:[a-z]{2}_)?[A-z0-9]{32}$", "", UTF_16, match("fx_abcdefghjiklmnopqrstuvwxyz012345", 0, 0, 35)),
        testCase(".{50,}", "", UTF_16, match("cpKYAzgh2N-8XnhSj866EciAV1wHFC7lL1na79xjsx68CsiX-Ky4v9ljf-4q6NzI8mMH9G1hCF2r_3JYzZh69w", 0, 0, 86)),
        testCase("[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com", "", UTF_16, match("123456789-0123456789ABCDEFabcdef01234567Aa.apps.googleusercontent.com", 0, 0, 69)),
        testCase("^((\\/.{1})?(\\/.{1,34})?)(\\n)?(.{1,35}(\\n.{1,35}){0,3})$", "", UTF_16, match("/X/123456\nname\naddres\naddress2", 0, 0, 30, 0, 9, 0, 2, 2, 9, 9, 10, 10, 30, 21, 30)),
        testCase("^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$", "", UTF_16, noMatch("/nathan7/53031bbfdf884ba2817a.git", 0)),
        testCase("\\w|([\u9940]\\Zq\\1*?){0,25}?\u930e", "", UTF_16, match("VV", 0, 0, 1, -1, -1)),
        testCase("\\D\\w{8,82}|v\\Z", "", UTF_16, match("vZvZ", 2, 2, 4)),
        testCase("\\s([a-q]+){16,36}", "", UTF_16, noMatch("_ ecqcabaadccbb cc", 1)),
        testCase("a(\\d|){4,20}b", "", UTF_16, noMatch("244za48452zba4", 4)),
        testCase("\\D\\z+\\z\\A(?:|\\1\u9369){3,55}?\u94ff\u50c5", "", UTF_16, match("zz\u2c33Azz\u0001zz\ufa0azz\u0012zzzzzzzzzzzA\u0001\u9369\u94ff\u50c5zzz\uce72zz\u50c5\ud105\u7de3z\ucc51z\u94ff\u94ff", 11, 12, 29)),
        testCase("\ud644\\Z*\\Z{52,52}\ub7a8\ue512(?=)(?:)\\1(?:)\\Z\\1", "", UTF_16, match("\ud644ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\ub7a8\ue512\u0001Z\u0001\u0001ZZZ\uf89b", 0, 0, 63)),
        testCase("(?=[a-z]{25,28}x)[a-z]", "", UTF_16, noMatch("asdfasdfasdfasdfasdfasdfasdfasdfxasdf", 9)),
        testCase("[a-z]{27,27}$|[a-z]", "", UTF_16, match("aaaaaa", 5, 5, 6)),
        testCase("(?:b(|a){9,24}c)$", "", UTF_16, noMatch("eabaaeabaaaaaaaaaaaacaabaaaeeaaeaae", 6)),
        testCase("ua(|b){15,18}$", "", UTF_16, noMatch("uxuuabbbbbbbbbbbbbbbbbbb", 1)),
        testCase("c($|ab){7}", "", UTF_16, noMatch("cab_", 0)),
        testCase("\\w(?:\\D|^){5,11}?b", "", UTF_16, noMatch("a0aaaab", 0)),
        testCase("\\w\u11ea\\W{5,49}", "", UTF_16, match("\u11ea\\\u0014\u11ea``v\u11ea`\\`\u001c`:\u0014\u001c`\u4c57:`\u0014\u0014\u11ea", 5, 6, 23)),
        testCase("(?:a|(?=a)){21,30}b", "", UTF_16, match("abaaaaaaaaaaaaaaab", 0, 0, 2)),
        testCase("(?:ab|(?=ab)){21,30}c", "", UTF_16, match("abcababababababababc", 0, 0, 3)),
        testCase("[ab]aca{24,}?", "", UTF_16, match("bacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 0, 27)),
        testCase("^block($|(?=__|_))", "", UTF_16, match("block_baz", 0, 0, 5, 5, 5)),
        testCase("^foo($|(?=__|_))", "", UTF_16, match("foo", 0, 0, 3, 3, 3)),
        testCase("^(.{80})(.*\\s.*)$", "", UTF_16, match("1. Currying `operators` and `selectors` by binding the `Store` to them for maximum convenience.", 0, 0, 95, 0, 80, 80, 95)),

        /* GENERATED CODE END - KEEP THIS MARKER FOR AUTOMATIC UPDATES */
        // @formatter:on
    };
}
